home *** CD-ROM | disk | FTP | other *** search
- ;
- ; Some practical assembler utility routines. See sutils.h for corresponding C prototypes
- ; They correspond to functions defined in util.c
- ;
- ; Michael Rausch 16-2-94 1:05:00
- ;
-
- SECTION text,CODE
-
- ER EQU -1
-
- END_OF_BLOCK EQU 62
- ESCAPE EQU 61
-
- RUN_MASK EQU $fc00
- RUN_SHIFT EQU 10
-
- LEVEL_MASK EQU $03f0
- LEVEL_SHIFT EQU 4
-
- NUM_MASK EQU $000f
-
-
- XREF @correct_underflow
- XREF _bitBuffer
- XREF _bufLength
- XREF _bitBuffer
- XREF _bitOffset
- ; XREF _bitCount ; ANALYSIS
- ; XREF _mbCoeffPtr ; ANALYSIS
-
- XREF _dct_coeff_first
- XREF _dct_coeff_next
- XREF _dct_coeff_tbl_0
- XREF _dct_coeff_tbl_1
- XREF _dct_coeff_tbl_2
- XREF _dct_coeff_tbl_3
-
- XREF _zigzag_direct
-
- XDEF _dummy_public
- _dummy_public:
- nop
-
-
- ; ***************************************************************
-
- ; Fills in the data if a new quantization matrix is encountered in the stream.
- ; In addition, it creates the qscale multiplication tables.
-
- XDEF @new_matrix
- @new_matrix:
- movem.l d2-d4/a2-a3,-(sp)
- move.l a0,a2
-
- moveq #16,d1
- cmp.l _bufLength(a4),d1
- ble.s nm_nc
- bsr @correct_underflow
- nm_nc:
-
- move.l a2,a1
-
- move.l _bitOffset(a4),d1
- move.l _bitBuffer(a4),a0
-
- moveq #8,d3
- moveq #32,d2
-
- moveq #63,d4
- get64bytesfromstream:
-
- bfextu (a0){d1:d3},d0
- move.w d0,(a1)+ ; was indexed via zigzag_direct, but changed in utilisation as well
-
- add.l d3,d1
- cmp.l d2,d1
- blt.s nmxw
- sub.l d2,d1
- addq.l #4,a0
- subq.l #1,_bufLength(a4)
- nmxw:
- dbra d4,get64bytesfromstream
-
- ; add.l #64*8,_bitCount(a4) ; ANALYSIS
- move.l a0,_bitBuffer(a4)
- move.l d1,_bitOffset(a4)
-
-
- move.l a2,a3 ; last scale
- moveq #29,d0
- allqscales:
- move.l a2,a0 ; first scale
- moveq #15,d1
- qscaletab:
- rept 2
- move.l (a0)+,d2 ; get first qscale
- add.l (a3)+,d2 ; add last qscale
- move.l d2,(a1)+ ; is new qscale
- endr
- dbra d1,qscaletab
- dbra d0,allqscales
-
-
- movem.l (sp)+,d2-d4/a2-a3
- rts
-
-
- ; ***************************************************************
-
- process_intra MACRO (label, sparereg)
-
- bfextu (a1){d7:d6},d0
-
- move.l d0,d1
- rol.l #8,d1 ; only .b-tests are valid!
-
- cmp.b #3,d1
- bls .adcd_others
-
- and.w #$ff,d1
- moveq #0,d5
- move.w (a2,d1.w*2),d5 ; value
-
- move.l d5,d3
- lsr.w #RUN_SHIFT-8,d3 ; run
- lsr.w #8,d3
- cmp.w #END_OF_BLOCK,d3
- beq \1 ; reci_ready
- cmp.w #ESCAPE,d3
- beq.s .aescape
-
- .astd_handle:
-
- move.w d5,d4 ; flushed
- and.w #NUM_MASK,d4
- addq.w #2,d4
-
- and.w #LEVEL_MASK,d5
- lsr.w #LEVEL_SHIFT,d5 ; level
-
- moveq.l #32,d1
- sub.w d4,d1
- btst d1,d0
- beq .aoutblockescape
- neg.l d5
- bra .aoutblockescape ; fertig
- .aescape:
-
- move.w d5,d4 ; flushed
- and.w #NUM_MASK,d4
- add.w #1+22,d4
-
- moveq #18+22-8,d1
- sub.w d4,d1
- move.l d0,d3
- lsr.l d1,d3 ; temp
-
- move.w d3,d5 ; ?!??
- lsr.l #8,d3
-
- and.w #$3fff,d3 ; run/level
-
- tst.b d3
- beq.s .aoutblockescape3
-
- cmp.b #128,d3
- beq.s .ais128
- move.b d3,d5
- subq.w #8,d4
- bra.s .aoutblockescape3
-
- .ais128:
- sub.w #256,d5
- ext.l d5
- bra.s .aoutblockescape2
-
-
- .adcd_others:
- beq.s .adc3 ; cmp #3 from above
- tst.b d1
- bne.s .adc1
- moveq #16,d1
- move.l #255,d3
- lea _dct_coeff_tbl_0(a4),\2
- bra.s .adcdo_gotval
- .adc1: subq.b #1,d1
- bne.s .adc2
- moveq #20,d1
- moveq #15,d3
- lea _dct_coeff_tbl_1(a4),\2
- bra.s .adcdo_gotval
- .adc2: lea _dct_coeff_tbl_2(a4),\2
- bra.s .adc32
- .adc3: lea _dct_coeff_tbl_3(a4),\2
- .adc32: moveq #22,d1
- moveq #3,d3
-
- .adcdo_gotval:
- move.l d0,d5
- lsr.l d1,d5
- and.l d3,d5
- move.w (\2,d5.w*2),d5 ; value
-
- move.l d5,d3
- lsr.w #RUN_SHIFT-8,d3 ; run
- lsr.w #8,d3
-
- bra .astd_handle
-
-
- .aoutblockescape3:
- extb.l d5
- .aoutblockescape2:
- lsr.w #8,d3
- .aoutblockescape:
-
- ; ext.l d4
- ; add.l d4,_bitCount(a4) ; ANALYSIS
- add.w d4,d7
- cmp.l d6,d7
- blt.s .adcds ;endofblock
- sub.l d6,d7
- addq.l #4,a1
- subq.l #1,_bufLength(a4)
- .adcds: ;endofblock:
- endm
-
- ; *******************
-
-
- XDEF _recon_nonintra
- _recon_nonintra:
- rni_regs REG d2-d7/a2-a3/a5-a6
- movem.l rni_regs,-(sp)
-
- swap d0
- move.l d0,-(sp) ; qscale
- move.l a1,a6
-
- lea _zigzag_direct(a4),a3
- lsl.l #2,d1 ; i, index to zigzag
- add.l d1,a3
-
- lea _dct_coeff_next(a4),a2
-
- move.l _bitBuffer(a4),a1
- move.l _bitOffset(a4),d7
- moveq #32,d6
-
- rneci_loop1:
- process_intra rneci_ready,a0
-
- addq.l #1,d3
- add.l d3,d3
- add.l d3,d3
- add.l d3,a3 ; i+= run+1 (implicit zigzag)
- move.l (a3),d1 ; pos
- muls.w (sp),d5 ; qscale
- asr.w #3,d5
- move.w d5,(a6,d1.l*2)
- bra rneci_loop1
-
- rneci_ready:
- move.l a1,_bitBuffer(a4)
- move.l d7,_bitOffset(a4)
-
-
-
- ; this won't work anymore ... take a3 instead!
- ; addq.l #1,([_mbCoeffPtr,a4],d1.l*4) ; ANALYSIS
-
- addq.l #4,sp
- movem.l (sp)+,rni_regs
- rts
-
-
-
-
- ; ***********************
-
- XDEF @recon_non2intra
- @recon_non2intra:
- ri_regs REG d2-d7/a2-a3/a5-a6
- movem.l ri_regs,-(sp)
- move.l a0,a5
-
- lea _zigzag_direct(a4),a3
- add.l d0,d0
- add.l d0,a5
- add.l d0,d0
- add.l d0,a3 ; i+= run
-
- bra r2ni_entry
-
- XDEF @recon_intra
- @recon_intra:
- movem.l ri_regs,-(sp)
- move.l a0,a5
-
- lea _zigzag_direct(a4),a3
-
- r2ni_entry:
- move.l a1,a6
- lea _dct_coeff_next(a4),a2
-
- move.l _bitBuffer(a4),a1
- move.l _bitOffset(a4),d7
- moveq #32,d6
-
- reci_loop1:
- process_intra reci_ready,a0
-
- addq.l #1,d3
- add.l d3,d3
- add.l d3,a5
- add.l d3,d3
- add.l d3,a3 ; i+= run+1 (implicit zigzag)
- move.l (a3),d1 ; pos
- muls.w (a5),d5
- asr.w #3,d5
- ; das vorzeichen von (a5) wird benutzt, um d5 mittels lsb auf/abrunden
- ; ...
- move.w d5,(a6,d1.l*2)
- bra reci_loop1
-
- reci_ready:
- move.l a1,_bitBuffer(a4)
- move.l d7,_bitOffset(a4)
-
-
- ; this won't work anymore ... reference a3 instead!
- ; addq.l #1,([_mbCoeffPtr,a4],d1.l*4) ; ANALYSIS
-
- movem.l (sp)+,ri_regs
- rts
-
-
-
-
-
- ; ***************************************************************
-
- bgsh_x: move.l a0,-(sp)
- move.l d0,-(sp)
- move.l a1,-(sp)
- bsr @correct_underflow
- move.l (sp)+,a1
- move.l (sp)+,d0
- bra.s bsngsh
-
- XDEF @s_get_bits_huff
- @s_get_bits_huff:
- moveq #2,d1
- cmp.l _bufLength(a4),d1
- bgt.s bgsh_x
-
- XDEF @sn_get_bits_huff
- @sn_get_bits_huff:
- move.l a0,-(sp)
- bsngsh:
-
- move.l _bitOffset(a4),d1
- move.l _bitBuffer(a4),a0
- bfextu (a0){d1:d0},d2
-
- move.l (sp)+,a0
-
- move.w (a1,d2.w*2),d0
- bmi.s gbh_error
-
- moveq #0,d2
- move.b d0,d2
-
- ; add.l d2,_bitCount(a4) ; ANALYSIS
-
- add.l d1,d2
- moveq #32,d1
- cmp.l d1,d2
- blt.s bsgdhw
- sub.l d1,d2
- addq.l #4,_bitBuffer(a4)
- subq.l #1,_bufLength(a4)
- bsgdhw:
- move.l d2,_bitOffset(a4)
-
- lsr.w #8,d0
- moveq #0,d1
- lsr.w #1,d0
- addx.w d1,d1
- move.l d1,(a0) ; save intra
- rts
-
- gbh_error:
- moveq #1,d0
- move.l d0,(a0)
- rts
-
-
-
- ; ***************************************************************
-
-
- XDEF @s_DecodeCBP
- @s_DecodeCBP:
- moveq #9,d0
- lea _coded_block_pattern,a0
- bra.s @s_get_byte_huff
-
- XDEF @sn_DecodeCBP
- @sn_DecodeCBP:
- moveq #9,d0
- lea _coded_block_pattern,a0
- bra.s @sn_get_byte_huff
-
-
- gsh_x: move.l d2,-(sp)
- move.l a0,-(sp)
- move.l d0,d2
- bsr @correct_underflow
- move.l d2,d0
- move.l (sp)+,a0
- bra.s sngsh
-
- XDEF @s_get_byte_huff
- @s_get_byte_huff:
- moveq #2,d1
- cmp.l _bufLength(a4),d1
- bgt.s gsh_x
-
- XDEF @sn_get_byte_huff
- @sn_get_byte_huff:
- move.l d2,-(sp)
- sngsh:
-
- move.l _bitOffset(a4),d1
- move.l _bitBuffer(a4),a1
- bfextu (a1){d1:d0},d2
-
- move.w (a0,d2.w*2),d0
-
- moveq #0,d2
- move.b d0,d2
-
- ; add.l d2,_bitCount(a4) ; ANALYSIS
-
- add.l d1,d2
- moveq #32,d1
- cmp.l d1,d2
- blt.s sgdhw
- sub.l d1,d2
- addq.l #4,_bitBuffer(a4)
- subq.l #1,_bufLength(a4)
- sgdhw:
- move.l d2,_bitOffset(a4)
-
- lsr.w #8,d0
- extb.l d0
-
- move.l (sp)+,d2
- rts
-
-
- ; ***************************************************************
-
- XDEF _s_DecodeDCTCoeff
- _s_DecodeDCTCoeff:
- dcdregs REG d2-d7
- movem.l dcdregs,-(sp)
-
- move.l _bitBuffer(a4),a1
- move.l _bitOffset(a4),d7
- moveq #32,d6
-
- process_intra endofblock,a2
-
- move.l a1,_bitBuffer(a4)
- move.l d7,_bitOffset(a4)
-
- move.l d5,(a0) ; int *level
-
-
- endofblock:
- move.w d3,d0 ; run = return value!
- ext.l d0
-
- movem.l (sp)+,dcdregs
- rts
-
-
-
- ; ***************************************************************
-
- XDEF @s_DecodeDCTDCSizeLum
- @s_DecodeDCTDCSizeLum:
- moveq #7,d1
- lea _dct_dc_size_luminance,a1
- bra.s sdlc
-
- XDEF @s_DecodeDCTDCSizeChrom
- @s_DecodeDCTDCSizeChrom:
- moveq #8,d1
- lea _dct_dc_size_chrominance,a1
- sdlc: move.l d2,-(sp)
- move.l d3,-(sp)
-
- move.l _bitOffset(a4),d0
- move.l _bitBuffer(a4),a0
- moveq #16,d3
- bfextu (a0){d0:d3},d2
-
- move.l d2,d0
- sub.l d1,d3
- lsr.l d3,d0
- move.w (a1,d0.w*2),d0 ; macroval
-
- move.b d0,d3 ; flushed.l
- lsl.w d3,d2
- lsr.w d3,d2 ; mask off the header
-
- lsr.w #8,d0 ; size
- tst.w d0 ; necessary ?
- beq.s cdlflush
-
- add.w d0,d3
- moveq #16,d1
- sub.l d3,d1
- lsr.l d1,d2 ; trash unused lower bits
-
- subq.l #1,d0 ; MPEG has some really strange sign extension, just like JPEG! Weirdo!
- btst d0,d2
- bne cdlsign
- moveq #-2,d1
- lsl.l d0,d1
- or.l d1,d2
- addq.l #1,d2
- cdlsign: move.l d2,d0 ; the desired result
- cdlflush:
-
- ; add.l d3,_bitCount(a4) ; ANALYSIS
-
- add.l _bitOffset(a4),d3
- moveq #32,d1
- cmp.l d1,d3
- blt.s cdlXw
- sub.l d1,d3
- addq.l #4,_bitBuffer(a4)
- subq.l #1,_bufLength(a4)
- cdlXw:
- move.l d3,_bitOffset(a4)
- move.l (sp)+,d3
- move.l (sp)+,d2
- rts
-
-
- ; ***************************************************************
-
- sgb1: bsr @correct_underflow
- bra.s @sn_get_bits1
-
- XDEF @s_get_bits1
- @s_get_bits1:
- moveq #2,d1
- cmp.l _bufLength(a4),d1
- bgt.s sgb1
-
- XDEF @sn_get_bits1
- @sn_get_bits1:
- ; addq.l #1,_bitCount(a4) ; ANALYSIS
- move.l _bitBuffer(a4),a0
- move.l _bitOffset(a4),d1
- moveq #1,d0 ; hmm ?!
- bfextu (a0){d1:d0},d0
- addq.l #1,d1
- btst #5,d1
- beq.s gb1r
- addq.l #4,a0
- moveq #0,d1
- move.l a0,_bitBuffer(a4)
- subq.l #1,_bufLength(a4)
- gb1r: move.l d1,_bitOffset(A4)
- rts
-
-
-
- sgbX: move.l d0,-(sp)
- bsr @correct_underflow
- move.l (sp)+,d0
- bra.s @sn_get_bitsX
-
- XDEF @s_get_bitsX
- @s_get_bitsX:
- moveq #2,d1
- cmp.l _bufLength(a4),d1
- bgt.s sgbX
-
- XDEF @sn_get_bitsX
- @sn_get_bitsX:
- ; add.l d0,_bitCount(a4) ; ANALYSIS
- move.l _bitOffset(a4),d1
- move.l _bitBuffer(a4),a0
- move.l d1,a1
- add.l d0,a1
- bfextu (a0){d1:d0},d0
- moveq #32,d1
- cmp.l d1,a1
- blt.s gsbXw
- sub.l d1,a1
- addq.l #4,a0
- move.l a0,_bitBuffer(a4)
- subq.l #1,_bufLength(a4)
- gsbXw: move.l a1,_bitOffset(a4)
- rts
-
-
- ; ***************************************************************
-
- ssb32_ofoi:
- bsr @correct_underflow ; ofoi OPT
- bra.s @sn_show_bits32
-
- XDEF @s_show_bits32
- @s_show_bits32
- moveq #2,d1
- cmp.l _bufLength(a4),d1
- bgt.s ssb32_ofoi
-
- XDEF @sn_show_bits32
- @sn_show_bits32:
- move.l _bitBuffer(a4),a0
- move.l _bitOffset(a4),d1
- moveq #32,d0
- bfextu (a0){d1:d0},d0
- rts
-
-
- ssb_x: move.l d0,-(sp)
- bsr @correct_underflow
- move.l (sp)+,d0
- bra.s @sn_show_bitsX
-
- XDEF @s_show_bitsX
- @s_show_bitsX
- moveq #2,d1
- cmp.l _bufLength(a4),d1
- bgt.s ssb_x
-
- XDEF @sn_show_bitsX
- @sn_show_bitsX:
- move.l _bitOffset(a4),d1
- move.l _bitBuffer(a4),a0
- bfextu (a0){d1:d0},d0
- rts
-
-
-
- ; ***************************************************************
-
-
- sf32_ofoi:
- bsr @correct_underflow ; moved away
- bra.s @sn_flush_bits32
-
- XDEF @s_flush_bits32
- @s_flush_bits32:
- moveq #2,d1
- cmp.l _bufLength(a4),d1
- bgt.s sf32_ofoi
-
- XDEF @sn_flush_bits32
- @sn_flush_bits32:
- ; add.l #32,_bitCount(a4) ; ANALYSIS
- addq.l #4,_bitBuffer(a4)
- subq.l #1,_bufLength(a4)
- rts
-
-
- sf_outtafoi:
- move.l d0,-(sp)
- bsr @correct_underflow ; moved away, out of flow of instructions
- move.l (sp)+,d0
- bra.s @sn_flush_bits
-
- XDEF @s_flush_bits
- @s_flush_bits:
- moveq #2,d1
- cmp.l _bufLength(a4),d1
- bgt.s sf_outtafoi
-
- XDEF @sn_flush_bits
- @sn_flush_bits:
- ; add.l d0,_bitCount(a4) ; ANALYSIS
- add.l _bitOffset(a4),d0
- moveq #32,d1
- cmp.l d1,d0
- blt.s sbf32
- sub.l d1,d0
- addq.l #4,_bitBuffer(a4)
- subq.l #1,_bufLength(a4)
- sbf32: move.l d0,_bitOffset(a4)
- rts
-
-
-
- locallevel: ds.l 1
-
- ; ***************************************************************
- ;
-
- SECTION data,DATA
-
-
- ;
- ; Decoding table for coded_block_pattern
- ;
-
- ; XDEF _coded_block_pattern
-
- _coded_block_pattern:
- dc.b ER, 0, ER, 0, 39, 9, 27, 9, 59, 9, 55, 9, 47, 9, 31, 9
- dc.b 58, 8, 58, 8, 54, 8, 54, 8, 46, 8, 46, 8, 30, 8, 30, 8
- dc.b 57, 8, 57, 8, 53, 8, 53, 8, 45, 8, 45, 8, 29, 8, 29, 8
- dc.b 38, 8, 38, 8, 26, 8, 26, 8, 37, 8, 37, 8, 25, 8, 25, 8
- dc.b 43, 8, 43, 8, 23, 8, 23, 8, 51, 8, 51, 8, 15, 8, 15, 8
- dc.b 42, 8, 42, 8, 22, 8, 22, 8, 50, 8, 50, 8, 14, 8, 14, 8
- dc.b 41, 8, 41, 8, 21, 8, 21, 8, 49, 8, 49, 8, 13, 8, 13, 8
- dc.b 35, 8, 35, 8, 19, 8, 19, 8, 11, 8, 11, 8, 7, 8, 7, 8
- dc.b 34, 7, 34, 7, 34, 7, 34, 7, 18, 7, 18, 7, 18, 7, 18, 7
- dc.b 10, 7, 10, 7, 10, 7, 10, 7, 6, 7, 6, 7, 6, 7, 6, 7
- dc.b 33, 7, 33, 7, 33, 7, 33, 7, 17, 7, 17, 7, 17, 7, 17, 7
- dc.b 9, 7, 9, 7, 9, 7, 9, 7, 5, 7, 5, 7, 5, 7, 5, 7
- dc.b 63, 6, 63, 6, 63, 6, 63, 6, 63, 6, 63, 6, 63, 6, 63, 6
- dc.b 3, 6, 3, 6, 3, 6, 3, 6, 3, 6, 3, 6, 3, 6, 3, 6
- dc.b 36, 6, 36, 6, 36, 6, 36, 6, 36, 6, 36, 6, 36, 6, 36, 6
- dc.b 24, 6, 24, 6, 24, 6, 24, 6, 24, 6, 24, 6, 24, 6, 24, 6
- dc.b 62, 5, 62, 5, 62, 5, 62, 5, 62, 5, 62, 5, 62, 5, 62, 5
- dc.b 62, 5, 62, 5, 62, 5, 62, 5, 62, 5, 62, 5, 62, 5, 62, 5
- dc.b 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5
- dc.b 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5, 2, 5
- dc.b 61, 5, 61, 5, 61, 5, 61, 5, 61, 5, 61, 5, 61, 5, 61, 5
- dc.b 61, 5, 61, 5, 61, 5, 61, 5, 61, 5, 61, 5, 61, 5, 61, 5
- dc.b 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5
- dc.b 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5
- dc.b 56, 5, 56, 5, 56, 5, 56, 5, 56, 5, 56, 5, 56, 5, 56, 5
- dc.b 56, 5, 56, 5, 56, 5, 56, 5, 56, 5, 56, 5, 56, 5, 56, 5
- dc.b 52, 5, 52, 5, 52, 5, 52, 5, 52, 5, 52, 5, 52, 5, 52, 5
- dc.b 52, 5, 52, 5, 52, 5, 52, 5, 52, 5, 52, 5, 52, 5, 52, 5
- dc.b 44, 5, 44, 5, 44, 5, 44, 5, 44, 5, 44, 5, 44, 5, 44, 5
- dc.b 44, 5, 44, 5, 44, 5, 44, 5, 44, 5, 44, 5, 44, 5, 44, 5
- dc.b 28, 5, 28, 5, 28, 5, 28, 5, 28, 5, 28, 5, 28, 5, 28, 5
- dc.b 28, 5, 28, 5, 28, 5, 28, 5, 28, 5, 28, 5, 28, 5, 28, 5
- dc.b 40, 5, 40, 5, 40, 5, 40, 5, 40, 5, 40, 5, 40, 5, 40, 5
- dc.b 40, 5, 40, 5, 40, 5, 40, 5, 40, 5, 40, 5, 40, 5, 40, 5
- dc.b 20, 5, 20, 5, 20, 5, 20, 5, 20, 5, 20, 5, 20, 5, 20, 5
- dc.b 20, 5, 20, 5, 20, 5, 20, 5, 20, 5, 20, 5, 20, 5, 20, 5
- dc.b 48, 5, 48, 5, 48, 5, 48, 5, 48, 5, 48, 5, 48, 5, 48, 5
- dc.b 48, 5, 48, 5, 48, 5, 48, 5, 48, 5, 48, 5, 48, 5, 48, 5
- dc.b 12, 5, 12, 5, 12, 5, 12, 5, 12, 5, 12, 5, 12, 5, 12, 5
- dc.b 12, 5, 12, 5, 12, 5, 12, 5, 12, 5, 12, 5, 12, 5, 12, 5
- dc.b 32, 4, 32, 4, 32, 4, 32, 4, 32, 4, 32, 4, 32, 4, 32, 4
- dc.b 32, 4, 32, 4, 32, 4, 32, 4, 32, 4, 32, 4, 32, 4, 32, 4
- dc.b 32, 4, 32, 4, 32, 4, 32, 4, 32, 4, 32, 4, 32, 4, 32, 4
- dc.b 32, 4, 32, 4, 32, 4, 32, 4, 32, 4, 32, 4, 32, 4, 32, 4
- dc.b 16, 4, 16, 4, 16, 4, 16, 4, 16, 4, 16, 4, 16, 4, 16, 4
- dc.b 16, 4, 16, 4, 16, 4, 16, 4, 16, 4, 16, 4, 16, 4, 16, 4
- dc.b 16, 4, 16, 4, 16, 4, 16, 4, 16, 4, 16, 4, 16, 4, 16, 4
- dc.b 16, 4, 16, 4, 16, 4, 16, 4, 16, 4, 16, 4, 16, 4, 16, 4
- dc.b 8, 4, 8, 4, 8, 4, 8, 4, 8, 4, 8, 4, 8, 4, 8, 4
- dc.b 8, 4, 8, 4, 8, 4, 8, 4, 8, 4, 8, 4, 8, 4, 8, 4
- dc.b 8, 4, 8, 4, 8, 4, 8, 4, 8, 4, 8, 4, 8, 4, 8, 4
- dc.b 8, 4, 8, 4, 8, 4, 8, 4, 8, 4, 8, 4, 8, 4, 8, 4
- dc.b 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4
- dc.b 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4
- dc.b 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4
- dc.b 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4
- dc.b 60, 3, 60, 3, 60, 3, 60, 3, 60, 3, 60, 3, 60, 3, 60, 3
- dc.b 60, 3, 60, 3, 60, 3, 60, 3, 60, 3, 60, 3, 60, 3, 60, 3
- dc.b 60, 3, 60, 3, 60, 3, 60, 3, 60, 3, 60, 3, 60, 3, 60, 3
- dc.b 60, 3, 60, 3, 60, 3, 60, 3, 60, 3, 60, 3, 60, 3, 60, 3
- dc.b 60, 3, 60, 3, 60, 3, 60, 3, 60, 3, 60, 3, 60, 3, 60, 3
- dc.b 60, 3, 60, 3, 60, 3, 60, 3, 60, 3, 60, 3, 60, 3, 60, 3
- dc.b 60, 3, 60, 3, 60, 3, 60, 3, 60, 3, 60, 3, 60, 3, 60, 3
- dc.b 60, 3, 60, 3, 60, 3, 60, 3, 60, 3, 60, 3, 60, 3, 60, 3
-
-
-
-
- ; XDEF _dct_dc_size_luminance
- ; XDEF _dct_dc_size_chrominance
-
- _dct_dc_size_luminance:
- dc.b 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2
- dc.b 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2
- dc.b 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2
- dc.b 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2
- dc.b 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2
- dc.b 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2
- dc.b 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2
- dc.b 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2
- dc.b 0, 3, 0, 3, 0, 3, 0, 3, 0, 3, 0, 3, 0, 3, 0, 3
- dc.b 0, 3, 0, 3, 0, 3, 0, 3, 0, 3, 0, 3, 0, 3, 0, 3
- dc.b 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3
- dc.b 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3
- dc.b 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3
- dc.b 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3
- dc.b 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4
- dc.b 6, 5, 6, 5, 6, 5, 6, 5, 7, 6, 7, 6, 8, 7, ER,0
-
-
- _dct_dc_size_chrominance:
- dc.b 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2
- dc.b 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2
- dc.b 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2
- dc.b 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2
- dc.b 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2
- dc.b 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2
- dc.b 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2
- dc.b 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2
- dc.b 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2
- dc.b 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2
- dc.b 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2
- dc.b 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2
- dc.b 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2
- dc.b 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2
- dc.b 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2
- dc.b 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2
- dc.b 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2
- dc.b 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2
- dc.b 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2
- dc.b 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2
- dc.b 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2
- dc.b 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2
- dc.b 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2
- dc.b 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2
- dc.b 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3
- dc.b 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3
- dc.b 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3
- dc.b 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3
- dc.b 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4
- dc.b 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4
- dc.b 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5
- dc.b 6, 6, 6, 6, 6, 6, 6, 6, 7, 7, 7, 7, 8, 8, ER,0
-
-
- ; ***************************************************************
-
- END
-